// 是否为空
export const isEmptyStr = (str) => {
	return str.trim() == ''
}

/**
 * 匹配phone 固定
 */
export const isMobile = (str) => {
	const reg = /^((0\d{2,3}-\d{7,8})|(1[3456789]\d{9}))$/
	return reg.test(str)
}

/**
 * 匹配phone
 */
export const isPhone = (str) => {
	const reg = /^(1[3456789]\d{9})$/
	return reg.test(str)
}

/**
 * 匹配Email地址
 */
export const isEmail = (str) => {
	if (str == null || str == "") return false
	var result = str.match(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/)
	if (result == null) return false
	return true
}
/**
 * 是否为字母
 */
export function isLetter(value) {
	const reg = /^[a-zA-Z]*$/
	return reg.test(value)
}
/**
 * 是否为字母或者数字
 */
export function isEnOrNum(value) {
	const reg = /^[0-9a-zA-Z]*$/g
	return reg.test(value)
}

/**
 * 是否为身份证号码
 */
export function isIdCard(value) {
	const reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
	return reg.test(value)
}

/**
 * 是否为中文
 */
export function isChinese(value) {
	const reg = /^[\u4e00-\u9fa5]+$/gi
	return reg.test(value)
}



/**
 * 是否为URL格式
 */
export function isUrl(value) {
	const reg =
		/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/
	return reg.test(value)
}

/**
 * 是否图片格式
 */
export function isImage(value) {
	const reg = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i
	return reg.test(value.split('?')[0])
}

/**
 * 是否视频格式
 */
export function isVideo(value) {
	const reg = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i
	return reg.test(value.split('?')[0])
}

//校验a-z全是小写字母的字符串
export function isLowerCase(str) {
	const reg = /^[a-z]+$/
	return reg.test(str)
}

//校验A-Z全是大写字母的字符串
export function isUpperCase(str) {
	const reg = /^[A-Z]+$/
	return reg.test(str)
}

//校验A-Za-z字母构成的字符串
export function isAlphabets(str) {
	const reg = /^[A-Za-z]+$/
	return reg.test(str)
}


//校验汉字0个以上
export function isContainChinese(str) {
	const reg = /^([\u4e00-\u9fa5]){0,}$/
	return reg.test(str)
}

//验证姓名
export function verifyFullName(val) {
	// false: 姓名不正确
	if (!/^[\u4e00-\u9fa5]{1,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/.test(val)) return false;
	// true: 姓名正确
	else return true;
}

//校验用户名6到21位
export function validUsername(str) {
	const reg = /^[a-zA-Z0-9]{6,21}$/
	return reg.test(str)
}

//校验身份证,可X或x结尾
export function validIdentity(str) {
	const reg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/
	return reg.test(str)
}

//校验邮箱
export function validEmail(email) {
	const reg =
		/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
	return reg.test(email)
}

//校验是否是字符串
export function isString(str) {
	if (typeof str === 'string' || str instanceof String) {
		return true
	}
	return false
}

//校验是否为空或者null或者undefined
export function checkString(value) {
	if (typeof value === 'undefined') {
		return true
	} else if (value === null) {
		return true
	} else {
		// value = value.trim();
		if (value === '') {
			return true;
		}
		return false;
	}
}

//验证密码 (以字母开头，长度在6~16之间，只能包含字母、数字和下划线)
export function verifyPassword(val) {
	// false: 密码不正确
	if (!/^[a-zA-Z]\w{5,15}$/.test(val)) return false;
	// true: 密码正确
	else return true;
}

//验证强密码 (字母+数字+特殊字符，长度在6-16之间)
export function verifyPasswordPowerful(val) {
	// false: 强密码不正确
	if (!
		/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/
		.test(val))
		return false;
	// true: 强密码正确
	else return true;
}

//密码强度
export function verifyPasswordStrength(val) {
	let v = '';
	// 弱：纯数字，纯字母，纯特殊字符
	if (/^(?:\d+|[a-zA-Z]+|[!@#$%^&\.*]+){6,16}$/.test(val)) v = '弱';
	// 中：字母+数字，字母+特殊字符，数字+特殊字符
	if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '中';
	// 强：字母+数字+特殊字符
	if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/
		.test(val))
		v = '强';
	// 返回结果
	return v;
}

//验证IP地址
export function verifyIPAddress(val) {
	// false: IP地址不正确
	if (
		!
		/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
		.test(
			val
		)
	)
		return false;
	// true: IP地址正确
	else return true;
}

//验证邮政编码
export function verifyPostalCode(val) {
	// false: 邮政编码不正确
	if (!/^[1-9][0-9]{5}$/.test(val)) return false;
	// true: 邮政编码正确
	else return true;
}

//验证url
export function verifyUrl(val) {
	// false: url不正确
	if (
		!
		/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i
		.test(
			val
		)
	)
		return false;
	// true: url正确
	else return true;
}

//验证车牌号
export function verifyCarNum(val) {
	// false: 车牌号不正确
	if (
		!
		/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/
		.test(
			val
		)
	)
		return false;
	// true：车牌号正确
	else return true;
}